package com.myapi.ModelPoker;

import java.io.Serializable;

public abstract class PokerStyleFactory implements Serializable{

	public PokerStyleFactory() {

	}
	/**
	 * Creates an equivalent PokerHand for that player. This means that clients do not have to worry...
	 * 
	 * @param name 
	 * @param id
	 * @param chips Number of chips
	 * @return Player
	 */
	public abstract Player createPlayer(String name, String id, double chips);
	//createPlayer() creates an equivalent PokerHand for that player. This means that clients do not have to worry...
	//...about setting up the two-way composition relationship between Player and PlayerHand
	public abstract Dealer createDealer(String name);

	/**
	 * CreateTable is here to try to enforce that a new Table has to be created when the PokerStyleFactory changes, so we...
	 * ...don't run into having DrawDealers at the same Table as HoldEmPlayers etc
	 */
	public Table createTable(String id) {
		return new Table(id);
	}

}
